In communication systems, one goal is to transport information from one physical location to another, typically under some constraints, such as available time, available circuitry power, noise environments, and the number of pins bin or wires available for the transport. In most electronic communication systems, information is represented by physical quantities or values, such as electrical signals, optical signals or radio signals. The physical quantities might be, for example, voltages relative to a common ground or to some other point in a circuit, currents past a point in a circuit, a light intensity or a radio signal intensity. The communication environment (referred to herein as the “channel”) may introduce or impose on the signals some unwanted noise and/or timing uncertainty. The nature of the transmitter and receiver might also introduce such noise or uncertainty. Thus, in transporting the information from a transmitter to a receiver (or in both directions between two transceivers), there are constraints that might prevent a receiver from understanding exactly what the transmitter sent.
The communication itself takes place between electronic components. Thus, information is supplied (often as digital binary data or other data) to a transmitter, the transmitter transforms the information into physical quantities (if not already received as suitable physical quantities), operates on those physical quantities in some manner and causes signals representing the information to be conveyed to the channel. The receiver receives those transmitted signals, possibly altered by noise and timing uncertainty of the channel, then operates on those signals to attempt to recover the information transmitted.
Digital information is information available in discrete units, representable as or by bits, collections of bits, selections of members of a finite set, etc. The selection of the bits or the member indicates the information. For example, where the finite set has two members, information can be conveyed—one bit at a time—by the selection of one of the members or the other. This is referred to as binary encoding or binary representation. The finite set can be larger, such as some larger power of two or even a finite integer that is not an integer power of two. For example, where the finite set has 28 members, eight bits of information might be conveyed by a selection of one of those 28 members.
In the general case, information that is being conveyed, or encoded, is used to make selections from among a plurality of possible valid selection options. In a very simple case, the information is in the form of bits and the plurality of possible valid selection options consists of two possible valid selection options. Conveying a zero bit is done by selecting a first of the two possible valid selection options and conveying a one bit is done by selecting the other of the two possible valid selection options.
A transmitter converts these selections into some form of signal suitable for transmission over a channel. It may be as simple as sending one voltage level over a wire for one of the possible selections and a different voltage level for each of the other possible selections. For some purposes, the selections might be referred to as logical values, digital values, bit values, levels or the like, and one of the logical values might correspond to a logical 0, another a logical 1, etc. A receiver attempts to determine, from the version of the signal it receives, and possibly other information, what selections the transmitter made, as that allows the receiver to “decode” the information that was encoded by the transmitter.
Typically binary signaling (i.e., where the plurality of possible valid selection options consists of two possible valid selection options) is simpler for the receiver to decode than non-binary signaling (i.e., where the number of possible valid selection options is greater than two). Non-binary signaling can allow for more information to be sent per selection time period, with a possible trade-off that a receiver faced with noise might have a more difficult time choosing which of the N values was transmitted as there are more possible answers. Nonetheless, non-binary signals can be useful.
In either case (binary or non-binary), it might be useful to designate one of the selections as the “logical 0” level and provide numerical values for other selections to permit sensible processing of those values. For example, the “logical 0” level might be associated with the value that the signal takes on when no current, or the minimum current, is flowing in a circuit, or when no voltage is being driven. Where there are more than two possible values, each other level might have an associated value that might correspond to a physical quantity. For these non-binary cases, the number of possible values might be three, five or an integer power of two.
For example, in the case of non-binary signaling with three levels to select from, one might draw an amount of current in one direction, another draw no current, and the third draw the amount of current but in the other direction. These might be given the values −1, 0, and 1, respectively. The values assigned to the levels might be related to a physical quantity such that values can be compared, summed, etc. in meaningful ways.
It may be that the transmitter needs to convey a certain number of bits of information in a fixed amount of time, such as 100 GB (billions of bits) per second, or 200 Mb (millions of bits) per second, or 1 billion non-binary symbols over half a second. The transmission might be divided into periods, often equally spaced, such that the information is divided into portions and each portion is sent in a period. For example, the period, T, for transmission might be T=10 ms, T=10−6 s, T=4×10−9 s, or some other period.
A transmission rate of a communication system might be measured in bits per second, which for the periodic transmission approach described above, might be equal to the number of periods per second times the number of bits that are conveyed by the transmitter each period—this is sometimes referred to as the “bandwidth” or “capacity” of the transmitter. In some descriptions, a “symbol” refers to the signal that the transmitter conveys, or the selection the transmitter makes from the set of possible valid selections, each period. Where the transmitter only conveys one bit of information per period, the symbol used each period might be selected from a choice of two symbols. Where more bits (or other units of information) are conveyed, there might be a different number of symbols to choose from.
One constraint on a communication system is timing. In such communication systems, the transmitter is constrained to getting the signals out in one period, getting to the next period, and so on. With short periods, this can impose tight constraints on the transmitter. Often, the transmitter does not receive the information that is to be sent until just before the period in which the signals need to be sent conveying that information. In such cases, the transmitter does not have a lot of processing time. Often, higher bandwidths are preferred over lower bandwidths. However, it is typically not a simple matter to just increase bandwidth.
For example, simply changing a period of a transmission, such as by reducing the period, T, in half to double the bandwidth might create other problems. For example, timing errors might be more pronounced, physical quantities (voltage, current, etc.) from a symbol in one period might cause a disturbance in another period (inter-symbol interference, or “ISI”) and that gets more pronounced as the period is shortened. It also may be that the transmitter and/or receiver cannot keep up (and might also be constrained such that the problem cannot be solved by simply throwing more circuitry at the problem and/or running more in parallel).
Another constraint is computing power. Some transmissions can be made more resilient to noise and other channel details, for example by transmitting at a higher power, or performing some complex error-correction processing. However, such operations use power in the transmitter and possibly also in the receiver. Often, a measure of efficiency is the power used per bit of information transmitted, with a preference being for being able to transmit a fixed amount of information with lower power or being for being able to transmit more information with fixed amount of power, i.e., lower power per bit is preferred, all else being the same. For fair comparisons between two communication systems, the power needed to transmit a symbol's signal is considered, but also the power needed in circuitry to process the information to arrive at the signal needs to be counted. In other words, the power consumed by circuits required to process the information from bits to symbols that can be output by a transmitter has to be taken into account when comparing circuits for generating the signals.
Yet another constraint is pin usage. Increasing the number of pins can ameliorate constraints on bandwidth and power consumption. For example, with twice as many wires in a channel, perhaps the bandwidth could be easily doubled. Also, the transmission power can be lowered per wire if signals are duplicated on additional wires, or differential signaling is used. However, this reduces the pin-efficiency (“PE”), which can be a constraint in cases where chip-to-chip communication occurs, as ICs typically have tight constraints and trade-offs as to the number of pins used for communication.
In a common communication system, the transmitter and receiver are electronic components that are present in integrated circuits (“ICs”) and a communication setting is chip-to-chip communication. The communicating electronic components may be located in the same apparatus. Examples of this case are the communication between a central processing unit (“CPU”) and memory inside a computer, tablet PC or other mobile device. Another example is communication between two CPU cores that are integrated on the same chip. Yet another example is the communication between a graphics processing unit (“GPU”) and memory on a graphics card. In these cases, the actual communication takes place over wires on a printed circuit board (“PCB”) or metal wires integrated in a chip and these wires carry electrical signals. Other examples may become apparent after reading this disclosure. The communication may, for instance, take place wirelessly or over an optical fiber.
In the general case, a channel can comprise one or more wires, subchannels, etc. to increase the aggregate bandwidth. For clarity of explanation herein, a channel will be described as comprising one or more “wires” but it should be understood that, unless otherwise indicated, where transmission is described as occurring from a transmitter to a receiver over a channel having one or more wires, the description might also be applied to transmissions over an optical channel or wireless channel having separated subchannels (perhaps by polarization, frequency, etc.). As explained below, a subchannel might comprise two wires, as with differential signaling (“DS”). A single wire or a pair of these wires may be referred to as a “channel” or “link” and multiple channels collectively might be referred to as “a communication bus” between the electronic components.
In the case of a multi-wire channel, the symbol transmitted has multiple components, one per wire used, and the act of transmitting a component on one wire might result in noise on another wire. This is sometimes referred to as inter-carrier interference (“ICI”).
In some cases, communication takes place between components that are located in different apparatuses. An example of this situation is a digital photo camera that is connected to a computer. In this setting, the communication takes place over a physical cable (comprising one or several wires) or over a wireless medium. Another example is a set of computers that are connected to a network. The electronic components on a network card of each computer communicate with the electronic components of another network card of yet another computer or a router. This setting may be referred to as device-to-device communications. Unless otherwise indicated, device-to-device communications as described herein can be considered a special case of chip-to-chip communications.
As explained above, efficiency of a communication can be expressed in terms of the time it takes to transfer a certain amount of information (speed; e.g., bits/second), the energy that is required to transmit the information reliably (power consumption; e.g., joules/bit) and the number of wires required for communication (pin-efficiency; e.g., often defined in terms of a ratio of the number of bits transmitted in each time interval to the number of physical wires used to transmit those bits, i.e., bits/pin or bits/wire). In most systems, several trade-offs exist between these quantities and, depending on the application, one of these quantities might be more critical than another. A good example is the communication between a CPU and a memory in a mobile device. In that example, a battery feeds a mobile device and so the power consumption of the communication between the CPU and memory can have a large impact on the battery life. Where the device has a steady power source, such as a wall plug, power consumption may be less of an issue.
One difficulty in designing high-speed, low-power and pin-efficient communication systems lies in part in the fact that the communication channel is not perfect. First, the nature of the physical wires will mutually disturb the signals transmitted on them and noise and interference will be added to the transmitted signals. Second, the electronic components used to implement the communication system are not perfect and this may disturb the signals used for communication. These effects can be overcome, perhaps by changes that increase the power consumption per bit or that reduce the pin-efficiency, but those changes are often not desirable.
A possible method to overcome such difficulties is provided by selecting or designing appropriate signaling methods and configuring the transmitter and receiver to use such methods. Such methods might represent a mapping between the information to be transmitted (usually one or several bits) and the physical quantities on the communication wires that represent this information, i.e., the signal. A large number of signaling methods have been studied and are in use. They differ in various characteristics leading to different trade-offs between speed, pin-efficiency, power consumption, and noise immunity. Moreover, they also differ on how many wires they use simultaneously.
As an example, single-ended signaling (“SES”) operates by sending a signal on one wire, whereas differential signaling (“DS”) operates by sending the signal using two wires, increasing noise resilience, but reducing pin-efficiency. Simple DS can reduce the pin-efficiency by half over SES. In the case of binary transmissions, SES uses a mapping between the set {0,1} of possible bits to two physical quantities that form a signal (e.g., voltage levels, current levels, optical levels, etc.). One of the two physical quantities might correspond to the “logical 0” value while the other corresponds to the “logical 1” value. In a common example where the physical quantities are voltages, the logical 0 might be represented by the ground-voltage and the logical 1 might then be represented by an elevated voltage level of a. The pin-efficiency of SES is 1, as one bit can be conveyed per period per wire.
With differential signaling (“DS”), the signaling method also uses a mapping between {0,1}, but here it is between {0,1} and the set {(a,−a), (−a,a)}, wherein a is an appropriately chosen physical quantity or representative number. That mapping means that for the logical 0, the two wires of the DS pair have imposed thereon a and −a, respectively, while for the logical 1, the two wires of the DS pair have imposed thereon −a and a, respectively. DS offers significant advantages over SES, at the expense of a lower pin-efficiency of 0.5 compared to SES.
Another signaling example is “non-binary SES” wherein single-ended signaling is used but more than two possible physical quantities can be selected from. An example is PAM-signaling, which uses a mapping between the set {0, 1, . . . , 2k−1} for some k>1 and a set of 2k distinct physical quantities of which one can be regarded as a logical 0. In this case, each wire carries k bits of information, thus providing a pin-efficiency of PE=k. However, to obtain reasonable immunity against noise, since the receiver must now differentiate more detail than just the choice between two possibilities, the physical quantities might need to be more distinct, such as having larger voltage differences between various levels. For example, where binary SES has two levels, non-binary SES with k=2 would have four levels and k=4 would have sixteen levels. Thus, while PAM-signaling might provide higher pin-efficiency, PAM-signaling creates other issues. Note, there may also be non-binary SES where the number of levels is not an integer power of two, but similar concerns apply there as well.
There are a number of signaling methods that maintain the desirable properties of DS while increasing pin-efficiency over DS. Many of these attempts operate on more than two wires simultaneously, using binary signals on each wire, but mapping information in groups of bits. For example, a communication system might, for some k>1, map each k information bits of the set {0,1}k to a set C comprising 2k codewords. Each codeword might have the same length and if that length is less than 2k, the pin-efficiency would be greater than 0.5. For example, each component might be conveyed on one of N wires and have coordinates belonging to a set {a,−a} so that each of the N wires has a binary signal. For simple “repetitive” DS, the DS signals are applied independently to pairs of wires, so number of wires (N) would be 2k. This mapping (with N<2k) can provide a higher pin-efficiency relative to DS. Also, unlike “repetitive” SES, the set C does not contain all possible vectors of the given length. Some of these methods are described in [Cornelius] and [Poulton].
Vector signaling is a method of signaling. With vector signaling, a plurality of signals on a plurality of wires are considered collectively although each of the plurality of signals might be independent. Each of the collective signals is referred to as a component and the number of plurality of wires is referred to as the “dimension” of the vector. In some embodiments, wherein the signal on one wire is entirely dependent on the signal on another wire, as is the case with DS pairs, so in some cases the dimension of the vector might refer to the number of degrees of freedom of signals on the plurality of wires instead of exactly the number of wires in the plurality of wires.
With binary vector signaling, each component takes on a coordinate value (or “coordinate”, for short) that is one of two possible values. As an example, eight SES wires might be considered collectively, with each component/wire taking on one of two values each signal period. A “codeword” of this binary vector signaling is one of the possible states of that collective set of components/wires. A “code set” or “vector set” is the collection of valid possible codewords for a given vector signaling encoding scheme.
Stated mathematically, binary vector signaling maps the information bits of the set {0,1}k for some k>1 to a vector set, C, comprising 2k vectors. Each vector might have the same dimension, N, and that dimension (i.e., number of components) might be greater than k but less than 2k (resulting in a the pin-efficiency above 0.5). A “binary vector signaling code” refers to a mapping and/or set of rules to map information bits to binary vectors.
With non-binary vector signaling, each component has a coordinate value that is a selection from a set of more than two possible values. Examples of non-binary vector signaling are presented in Cronie 1, Cronie II, SPM and SUPM.
A “non-binary vector signaling code” refers to a mapping and/or set of rules to map information bits to non-binary vectors. Stated mathematically, given an input word size, k>1, given a finite set, S, of three or more values (possibly corresponding to, or representable by, values that might correspond to physical quantities as explained herein, wherein the values are preferably real numbers), and given a vector dimensionality, N, non-binary vector signaling is a mapping between {0,1}k and a vector set, C, where C is a subset of SN. In specific instances, there is no proper subset T of S such that C is a subset of TN, i.e., over the vector set C, there is at least one component (coordinate position) in which each of the values of finite set S appears. For S being a finite set of three values, that means that there will be at least one coordinate position for which at least three codewords all have different values.
Some vector signaling methods are described in Cronie I, Cronie II, SPM, and SUPM. For example:                (1) orthogonal differential vector signaling is described, wherein the set C is obtained as the Hadamard-transform images of vectors of length k with coordinates {+1, −1};        (2) permutation modulation codes are described, wherein the set C is obtained by taking the set of all vectors obtained from all permutations of a fixed vector;        (3) sparse signaling codes are described, wherein the set C is the set of all vectors obtained from all permutations of a fixed vector in which many coordinates are zero (or a fixed number); and        (4) superposition signaling codes are described, wherein the set C may be obtained as a set-wise sum C1+C2+ . . . +C1 wherein C1, C2, . . . , C1 may be (sparse) signaling codes, or more generally, permutation modulation codes.        
While non-binary vector signaling methods can provide substantial improvements regarding the tradeoff of pin-efficiency, power efficiency and noise resilience as compared to traditional signaling methods, there are some applications wherein additional improvements are possible, and sometimes necessary.